/**
 * Historico de alteração
 *
 * Data         Autor   Descrição
 * 24/10/2010   Jerry   Criação do cabeçalho.
 *
 */

package railbee.log;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;


public class LogRailBee
{

   /**
    * Logger.
    */
   private static Logger logRB;

   /**
    * Singleton.
    */
   public static Logger createLog(String nomeArquivo)
   {
       if (logRB == null)
       {
           try
           {
               logRB = Logger.getLogger("railbee.log.LogRailBee.class");
               //br.com.railbee.log.LogRailBee.class

               PatternLayout patternLayout = new PatternLayout();
               patternLayout.setConversionPattern("%-5p %d{dd MMM yyyy HH:mm:ss} - %m%n");

               ConsoleAppender consoleLog = new ConsoleAppender(patternLayout);
               logRB.addAppender(consoleLog);

               FileAppender arquivoDeLog = new FileAppender(patternLayout,getNomeDoArquivoDeLog(nomeArquivo));
               logRB.addAppender(arquivoDeLog);

           }
           catch (Exception e)
           {
           }
       }
       return logRB;
   }

   /**
    * Cria o diret�rio do log e o nome do arquivo.
    *
    * @param nome
    * @return o nome do arquivo de log.
    */
   private static String getNomeDoArquivoDeLog(String nome)
   {
       File diretorioDeLog = new File(".//log");
       diretorioDeLog.mkdirs();

       SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd_kk.mm");

       String nomeDoArquivo = diretorioDeLog.getPath() + File.separator + "Log_"
               + nome + "_" + dateFormat.format(new Date()) + ".log";

       return nomeDoArquivo;
   }

   /**
    * Loga a quantidade de novos registros inseridos.
    *
    * @param total
    */
   public static void logaNumeroNovosRegistros(int total)
   {
       logRB.info(new String(total + " novos registros inseridos."));
   }

   /**
    * Loga a quantidade de registros alterados.
    *
    * @param total
    */
   public static void logaRegistrosAlterados(int total)
   {
       logRB.info(new String(total + " registros alterados."));
   }

   /**
    * Loga a informa��o de registros duplicados.
    *
    * @param mensagem
    */
   public static void logaRegistroDuplicado(String tabela, String nomeCampo, String idRegistroDuplicado)
   {
       logRB.error("Registro duplicado [" + tabela + "," + nomeCampo + "," + idRegistroDuplicado + "]");
   }

}